// 因为 typescript 是渐进式、支持最新标准的
// 完全按照 JavaScript 最新语法编写

// const hello = (name:string) => {
//   console.log(`hello ${name}`)
// }
// hello("world")


// const str :string = null
// const num :number = 123 // 还能存放 NaN Infinity
// const bl :boolean = true // false

// const vd:void = undefined
// const nl : null = null
// const ud:undefined = undefined
// const sb :symbol = Symbol("xxx")

// export { }

// let obj: object = {};
// obj = () => { }
// obj = [1, 2]

// const obj1: { name: string } = { name: "" }

// const arr1: Array<number> = [1, 2, 3]
// const arr2: number[] = [1, 2, 3]
// const tuple :[number,string] = [1,"2"]
// enum STATUS {
//   NORMAL = 0,
//   HIDDEN = 1,
//   DELETE = 2
// }

// function fun1(a: number, b?: string): string {
//   return "string"
// }
// fun1(1)
// fun1(1, "2")

// const fun2: (a: number, b?: string) => string = function (a: number, b?: string): string {
//   return "string"
// }

// function stringify(param:any) {
//   return JSON.stringify(param)
// }

// let num  = 123
// num = ""

// let ay 
// ay = 1
// ay = "str"

// const nums: number[] = [2, 3, 4, 5]
// const res = nums.find(i => i > 4)

// const square1 = res * res // 报错

// const num1 = res as number
// const square2 = num1 * num1

// const num2 = <number>res
// const square3 = num2 * num2

// interface User {
//   name: string
//   age: number
//   // 可选成员
//   gender?: string
//   readonly school?: string
// }
// const user: User = {
//   name: "xiaoming",
//   age: 23,
//   school: "zjut"
// }
// user.school = '' // 不允许修改

// interface AppCache {
//   [prop: string]: string
// }
// const cache :AppCache = {}
// cache.userName = "xiaoming"

// class User {
//   // 默认public
//   public name: string
//   private age: number
//   protected readonly gender: string
//   constructor(name: string, age: number) {
//     this.name = name
//     this.age = age
//     this.gender = "1"
//   }
// }
// class Manager extends User{
//   constructor(name: string, age: number){
//     super(name,age)
//     console.log(this.gender)
//   }
// }
// const user: User = new User("xiaoming", 25)
// console.log(user.name)
// console.log(user.age) // 报错
// console.log(user.gender) // 报错

// interface EatAndRun{
//   eat(food:string):void
//   run(distance:number):void
// }
// class Person implements EatAndRun{
//   eat(food:string):void{
//     console.log(`human eat ${food}`)
//   }
//   run(distance:number):void{
//     console.log(`human run ${distance}`)
//   }
// }
// class Animal implements EatAndRun{
//   eat(food:string):void{
//     console.log(`animal eat ${food}`)
//   }
//   run(distance:number):void{
//     console.log(`animal run ${distance}`)
//   }
// }

// abstract class Animal {
//   eat(food: string): void {
//     console.log(`animal eat ${food}`)
//   }
//   abstract run(distance: number): void
// }
// class Dog extends Animal {
//   run(distance: number): void {
//     console.log(`dog run ${distance}`)
//   }
// }

// function createNumberArray(length: number, value: number):number[] {
//   return Array<number>(length).fill(value)
// }
// function createStringArray(length: number, value: string):string[] {
//   return Array<string>(length).fill(value)
// }

// // 可以替换为
// function createArray <T>(length: number, value: T):T[] {
//   return Array<T>(length).fill(value)
// }

import {camelCase} from 'lodash'
declare function camelCase(input:string) :string
const res = camelCase("hello Type")
